package com.example.propertymanagement.service;

import com.example.propertymanagement.entity.Property;
import com.example.propertymanagement.repository.PropertyRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

/**
 * PropertyService：房产的业务逻辑处理层
 */
@Service
public class PropertyService {

    @Autowired
    private PropertyRepository propertyRepository;  // 注入 PropertyRepository 进行数据库操作

    /**
     * 获取所有房产列表
     * @return 房产列表
     */
    public List<Property> getAllProperties() {
        return propertyRepository.findAll();  // 获取所有房产
    }

    /**
     * 根据小区ID获取房产列表
     * @param communityId 小区ID
     * @return 房产列表
     */
    public List<Property> getPropertiesByCommunity(Integer communityId) {
        return propertyRepository.findByCommunityId(communityId);  // 根据小区ID获取房产
    }

    /**
     * 根据房屋状态获取房产列表
     * @param status 房屋状态：0 空置，1 已入住
     * @return 房产列表
     */
    public List<Property> getPropertiesByStatus(Integer status) {
        return propertyRepository.findByStatus(status);  // 根据状态获取房产
    }

    /**
     * 创建房产
     * @param property 房产对象
     * @return 创建后的房产对象
     */
    public Property createProperty(Property property) {
        return propertyRepository.save(property);  // 保存房产
    }

    /**
     * 更新房产信息
     * @param property 房产对象
     * @return 更新后的房产对象
     */
    public Property updateProperty(Property property) {
        return propertyRepository.save(property);  // 更新房产
    }

    /**
     * 删除房产
     * @param id 房产ID
     */
    public void deleteProperty(Integer id) {
        propertyRepository.deleteById(id);  // 删除房产
    }

    /**
     * 修改房产状态（空置 / 已入住）
     * @param id 房产ID
     * @param status 房产状态：0 空置，1 已入住
     */
    public void updatePropertyStatus(Integer id, Integer status) {
        Optional<Property> property = propertyRepository.findById(id);
        property.ifPresent(p -> {
            p.setStatus(status);  // 修改房产状态
            propertyRepository.save(p);  // 保存更新后的房产
        });
    }
}